package com.csmht.tododemo.mapper;

import com.csmht.tododemo.annotation.AutoFill;
import com.csmht.tododemo.pojo.dto.CommentPageDTO;
import com.csmht.tododemo.pojo.dto.PageDTO;
import com.csmht.tododemo.pojo.entity.Report;
import com.csmht.tododemo.pojo.entity.Todo;
import com.csmht.tododemo.pojo.enumeration.OperationType;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;

import java.util.List;

@Mapper
public interface TodoMapper {
    @AutoFill(OperationType.ONE)
    void insert(Todo todo);

    @AutoFill(OperationType.LIST)
    void insertList(List<Todo> todos);

    @Delete("delete from todo where id = #{id}")
    void del(Long id);

    void update(Todo todo);

    @Select("select * from todo where create_user = ${userId}")
    List<Todo> select(Long userId);

    @Select("select * from todo where id = #{id}")
    Todo selectById(Long id);

    List<Todo> page(Long userId, PageDTO pageDTO);


    List<Todo> selectByIds(List<Long> list);

    @Select("select id from todo where create_user = #{userId}")
    List<Long> selectTodoIdByUserId(Long userId);


    List<Report> getReportTodo();

    @Select("select * from todo where visitor = 1")
    List<Todo> getAllVisitor();


    void updateVisitor(List<Long> userIds);
}
